package com.example.pre.business;

import java.util.Map;
import java.util.Set;

import com.example.pre.enums.ReimbursementTypeEnum;
import com.example.pre.model.vo.ReimbursementVO;

/**
 * 报销申请业务层接口
 * 
 * @author Administrator
 *
 */
public interface ReimbursementBusiness {

	/**
	 * 创建报销申请
	 * 
	 * @param userId          用户id
	 * @param type            报销类型
	 * @param description     报销事由
	 * @param billingDataList 报销明细json集合
	 * @return
	 * @throws Exception
	 */
	public ReimbursementVO createReimbursement(int userId, ReimbursementTypeEnum type, String description,
			Set<String> billingDataList) throws Exception;

	/**
	 * 修改报销申请
	 * 
	 * @param userId          用户id
	 * @param reimbursementId 报销申请id
	 * @param type            报销类型
	 * @param description     报销描述
	 * @param billingDataList 报销明细json集合
	 * @return
	 * @throws Exception
	 */
	public ReimbursementVO updateReimbursement(int userId, int reimbursementId, ReimbursementTypeEnum type,
			String description, Set<String> billingDataList) throws Exception;

	/**
	 * 查看报销申请详情
	 * 
	 * @param reimbursementId 报销申请id
	 * @return
	 * @throws Exception
	 */
	public ReimbursementVO checkReimbursement(int reimbursementId) throws Exception;

	/**
	 * 发起报销申请
	 * 
	 * @param reimbursementId 报销申请id
	 * @return
	 * @throws Exception
	 */
	public Map<String, Object> flowReimbursement(int reimbursementId) throws Exception;

}
